package com.skq.validation;

import com.skq.anno.State;
import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;

/**
 * @author skq
 * @data 2024/6/11
 */
public class StateValidation implements ConstraintValidator<State, String> {

    /**
     * 验证给定的字符串值是否符合特定的校验规则。
     * 该方法旨在作为ConstraintValidator的一部分，用于在特定上下文中验证字符串是否为"已发布"或"草稿"。
     *
     * @param value                      待验证的字符串值。
     * @param constraintValidatorContext 验证上下文，提供关于验证过程的上下文信息和能力，如定制错误消息等。
     * @return boolean 返回true表示值有效，即值为"已发布"或"草稿"；返回false表示值无效。
     */
    @Override
    public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {
        // 检查值是否为null，为null则直接判定为无效
        if (value == null) {
            return false;
        }

        // 检查值是否为"已发布"或"草稿"，是则判定为有效
        if (value.equals("已发布") || value.equals("草稿")) {
            return true;
        }

        // 如果值既不为null，也不是"已发布"或"草稿"，则判定为无效
        return false;
    }
}
